package org.joa.examples.philosophers.generated;

import org.joa.actor.ActorProxyInterface;
import org.joa.actor.Atomic;
import org.joa.actor.exception.RemoteException;
import org.joa.util.Callback;

public interface Philosopher extends ActorProxyInterface {

    public void start(Chopstick leftChopstick, Chopstick rightChopstick) throws RemoteException;

    public void start(Chopstick leftChopstick, Chopstick rightChopstick, Callback<Void> callback)
        throws RemoteException;

    public void think() throws RemoteException;

    public void think(Callback<Void> callback) throws RemoteException;

    @Atomic
    public void eat() throws RemoteException;

    @Atomic
    public void eat(Callback<Void> callback) throws RemoteException;
}
